package co.edu.udea.iw.prestamos.ws;

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import co.edu.udea.iw.prestamos.bl.UsuarioBL;
import co.edu.udea.iw.prestamos.modelo.dto.Respuesta;
import co.edu.udea.iw.prestamos.modelo.dto.Usuario;
import co.edu.udea.iw.prestamos.util.seguridad.Autorizacion;

@Path("usuarios")
@Component
@Transactional
public class UsuarioResource {
	
	@Autowired
	private UsuarioBL usuarioBL;
	
	@Autowired
	private Autorizacion autorizacion;
	
	@POST
	@Produces({MediaType.APPLICATION_JSON})
	public Object registrarUsuario(@HeaderParam("user")  String username, 
			                       @HeaderParam("role")  String rol,
			                       @HeaderParam("token") String token,
			                       Usuario usuario) {
		
		Set<String> roles = new HashSet<String>() {{ add(Autorizacion.ROLE_ADMIN); }};
		if( autorizacion.isNotAuthorized(roles, username, rol) )
			throw new WebApplicationException(Response.Status.FORBIDDEN);

		return usuarioBL.registrarUsuario(usuario);
	}
	
}
